home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_gtk+.idb / usr / freeware / include / gtk / gtkcalendar.h.z / gtkcalendar.h
Encoding:
C/C++ Source or Header  |  1999-07-16  |  3.9 KB  |  143 lines

  1. /* GTK - The GIMP Toolkit
  2.  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
  3.  *
  4.  * GTK Calendar Widget
  5.  * Copyright (C) 1998 Cesar Miquel and Shawn T. Amundson
  6.  *
  7.  * This library is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU Library General Public
  9.  * License as published by the Free Software Foundation; either
  10.  * version 2 of the License, or (at your option) any later version.
  11.  *
  12.  * This library is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.     See the GNU
  15.  * Library General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU Library General Public
  18.  * License along with this library; if not, write to the Free
  19.  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  20.  */
  21.  
  22. /*
  23.  * Modified by the GTK+ Team and others 1997-1999.  See the AUTHORS
  24.  * file for a list of people on the GTK+ Team.  See the ChangeLog
  25.  * files for a list of changes.  These files are distributed with
  26.  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
  27.  */
  28.  
  29. #ifndef __GTK_CALENDAR_H__
  30. #define __GTK_CALENDAR_H__
  31.  
  32. #include <gdk/gdk.h>
  33. #include <gtk/gtksignal.h>
  34. #include <gtk/gtkwidget.h>
  35.  
  36.  
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif /* __cplusplus */
  40.  
  41.  
  42. #define GTK_TYPE_CALENDAR           (gtk_calendar_get_type ())
  43. #define GTK_CALENDAR(obj)           (GTK_CHECK_CAST ((obj), GTK_TYPE_CALENDAR, GtkCalendar))
  44. #define GTK_CALENDAR_CLASS(klass)       (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_CALENDAR, GtkCalendarClass))
  45. #define GTK_IS_CALENDAR(obj)           (GTK_CHECK_TYPE ((obj), GTK_TYPE_CALENDAR))
  46. #define GTK_IS_CALENDAR_CLASS(klass)       (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CALENDAR))
  47.  
  48.  
  49. typedef struct _GtkCalendar           GtkCalendar;
  50. typedef struct _GtkCalendarClass       GtkCalendarClass;
  51.  
  52. typedef enum
  53. {
  54.   GTK_CALENDAR_SHOW_HEADING        = 1 << 0,
  55.   GTK_CALENDAR_SHOW_DAY_NAMES        = 1 << 1,
  56.   GTK_CALENDAR_NO_MONTH_CHANGE        = 1 << 2,
  57.   GTK_CALENDAR_SHOW_WEEK_NUMBERS    = 1 << 3,
  58.   GTK_CALENDAR_WEEK_START_MONDAY    = 1 << 4
  59. } GtkCalendarDisplayOptions;
  60.  
  61. struct _GtkCalendar
  62. {
  63.   GtkWidget widget;
  64.   
  65.   GtkStyle  *header_style;
  66.   GtkStyle  *label_style;
  67.   
  68.   gint month;
  69.   gint year;
  70.   gint selected_day;
  71.   
  72.   gint day_month[6][7];
  73.   gint day[6][7];
  74.   
  75.   gint num_marked_dates;
  76.   gint marked_date[31];
  77.   GtkCalendarDisplayOptions  display_flags;
  78.   GdkColor marked_date_color[31];
  79.   
  80.   GdkGC *gc;
  81.   GdkGC *xor_gc;
  82.  
  83.   gint focus_row;
  84.   gint focus_col;
  85.  
  86.   gint highlight_row;
  87.   gint highlight_col;
  88.   
  89.   gpointer private_data;
  90.   gchar grow_space [32];
  91. };
  92.  
  93. struct _GtkCalendarClass
  94. {
  95.   GtkWidgetClass parent_class;
  96.   
  97.   /* Signal handlers */
  98.   void (* month_changed)        (GtkCalendar *calendar);
  99.   void (* day_selected)            (GtkCalendar *calendar);
  100.   void (* day_selected_double_click)    (GtkCalendar *calendar);
  101.   void (* prev_month)            (GtkCalendar *calendar);
  102.   void (* next_month)            (GtkCalendar *calendar);
  103.   void (* prev_year)            (GtkCalendar *calendar);
  104.   void (* next_year)            (GtkCalendar *calendar);
  105.   
  106. };
  107.  
  108.  
  109. GtkType       gtk_calendar_get_type    (void);
  110. GtkWidget* gtk_calendar_new        (void);
  111.  
  112. gint       gtk_calendar_select_month    (GtkCalendar *calendar, 
  113.                      guint          month,
  114.                      guint          year);
  115. void       gtk_calendar_select_day    (GtkCalendar *calendar,
  116.                      guint          day);
  117.  
  118. gint       gtk_calendar_mark_day    (GtkCalendar *calendar,
  119.                      guint          day);
  120. gint       gtk_calendar_unmark_day    (GtkCalendar *calendar,
  121.                      guint          day);
  122. void       gtk_calendar_clear_marks    (GtkCalendar *calendar);
  123.  
  124.  
  125. void       gtk_calendar_display_options (GtkCalendar          *calendar,
  126.                      GtkCalendarDisplayOptions flags);
  127.  
  128. void       gtk_calendar_get_date    (GtkCalendar *calendar, 
  129.                      guint         *year,
  130.                      guint         *month,
  131.                      guint         *day);
  132. void       gtk_calendar_freeze        (GtkCalendar *calendar);
  133. void       gtk_calendar_thaw        (GtkCalendar *calendar);
  134.  
  135.  
  136.  
  137.  
  138. #ifdef __cplusplus
  139. }
  140. #endif /* __cplusplus */
  141.  
  142. #endif /* __GTK_CALENDAR_H__ */
  143.